package main

import "fmt"

/*
var in int = 3

//以下有额外内存分配吗?
var i interface{} = in

解析:
在go中, 接口被实现为一对指针: 指向有关类型信息的指针和指向值得指针. 可以简单得表示为:
type interface struct {
	tab *itab  //指向该接口是什么类型  (int)
	data unsafe.Pointer  //指向该接口对应的值 (3)
}

其中 tab是指向类型信息的指针: data是指向值得指针.
因此, 一般来说接口意味着必须在堆中动态分配该值.

然而 go1.5之后进行了改动,
如果将小整数转换为接口值不再需要进行内存分配. 小整数是指0~255之间的数.

所以本题的3属于0~255之间, 不会进行新的内存分配
*/

func main() {
	var in int = 3
	var i interface{} = in
	fmt.Println(i)
}
